The present disclosure generally relates to the field of electronics. More particularly, an embodiment of the invention generally relates to a pipelined cyclic redundancy check.
Cyclic redundancy check (CRC) is a type of hash function that may be used to generate a checksum corresponding to a block of data, such as a communication packet. CRC may be used to detect data transmission errors. For example, a CRC value for a packet may be calculated prior to transmitting the packet and after the packet is received at a destination. These CRC values may be compared to detect data transmission errors.
To handle ever increasing data throughputs, wider data paths may be used in integrated circuit (IC) components. CRC may, however, be resistant to scaling to wider data paths. For example, some current implementations may use a linear feedback shift register (LFSR) to calculate a CRC value. In order to increase the parallelism, the serial implementation may be unrolled. Unrolling the serial implementation may, however, increase the worst case timing path. For example, the critical timing path delay may be increased with each doubling of the data width (and consequent doubling of area). Since the computed result may be fed back to compute the next value, the doubling in area may result in less than double the throughput.